#!/bin/bash

# 确保脚本有执行权限
# chmod +x convert_pcd.sh

# 检查参数
if [ $# -lt 1 ]; then
    echo "用法: convert_pcd.sh <pcd_file> [output_format]"
    echo "支持的输出格式: ply, vtk, obj (默认: ply)"
    exit 1
fi

# 输入文件
INPUT_FILE="$1"

# 检查输入文件是否存在
if [ ! -f "$INPUT_FILE" ]; then
    echo "错误: 输入文件不存在: $INPUT_FILE"
    exit 1
fi

# 输出格式
if [ $# -gt 1 ]; then
    FORMAT="$2"
else
    FORMAT="ply"  # 默认格式
fi

# 生成输出文件名
BASENAME=$(basename "$INPUT_FILE" .pcd)
OUTPUT_FILE="${BASENAME}.${FORMAT}"

echo "正在将 $INPUT_FILE 转换为 $OUTPUT_FILE..."

# 根据格式选择转换工具
case "$FORMAT" in
    "ply")
        pcl_pcd2ply "$INPUT_FILE" "$OUTPUT_FILE"
        ;;
    "vtk")
        pcl_pcd2vtk "$INPUT_FILE" "$OUTPUT_FILE"
        ;;
    "obj")
        # PCL没有直接的pcd到obj转换工具，所以先转为ply，再用其他工具转换
        TMP_PLY="${BASENAME}.ply"
        pcl_pcd2ply "$INPUT_FILE" "$TMP_PLY"
        echo "注意: PCD到OBJ的直接转换不可用。已转换为PLY格式: $TMP_PLY"
        echo "您可以使用其他工具（如MeshLab）将PLY转换为OBJ格式。"
        exit 0
        ;;
    *)
        echo "错误: 不支持的输出格式: $FORMAT"
        echo "支持的格式: ply, vtk, obj"
        exit 1
        ;;
esac

if [ $? -eq 0 ]; then
    echo "转换成功: $OUTPUT_FILE"
else
    echo "转换失败!"
fi 